package com.cw.service;

import com.cw.common.api.ResultObject;
import com.cw.dto.BaseDictListDto;
import com.cw.dto.BaseDictTree;
import com.cw.entity.BaseDict;
import com.baomidou.mybatisplus.extension.service.IService;
import com.cw.vo.BaseDictVo;
import com.github.pagehelper.PageInfo;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 字典表 服务类
 * </p>
 *
 * @author ly
 * @since 2021-04-26
 */
public interface IBaseDictService extends IService<BaseDict> {
    List<BaseDictTree> getAllBaseDicts();

    List<BaseDict> getBaseDictsByKindList(List<String> list);

    /**
     * 查询项目计划的参数信息（内容，经费，审批流程，学历，学位，职称）
     *
     * @return
     */
    List<BaseDictTree> getProPlanBaseDict();

    /**
     * 功能描述: <br> 〈查询字典表〉
     *
     * @Param:数据项名称
     * @Return: 树形字典表
     * @Author: wzw
     * @Date: 2019/11/6 9:30
     */

    ResultObject getBaseDictById(String id);

    /**
     * 获取字典表的对象以及他的子级
     * @param id 主键
     * @author ly
     * @date 2021/4/30 10:46
     * @return java.util.List<com.cw.entity.BaseDict>
     */
    List<BaseDict> getBaseDictByIdResultList(String id);

    /**
     * 功能描述: <br>
     * 〈批量删除字典表〉
     *
     * @Param:
     * getBaseDictById
     * @Author: wzw
     * @Date: 2019/11/6 9:33
     */
    ResultObject deleteBaseDictVoByIds(List<String> id);

    ResultObject addBaseDictVo(BaseDict baseDict);

    ResultObject updateBaseDictVo(BaseDict baseDict);

    /**
     * 查询节点
     */
    List<BaseDictVo> getParentBaseDict(String id);


    /**
     * 将字典数据变成树形结构
     * @param parentId
     * @param allBaseDicts
     * @return
     */
    List<BaseDictTree> baseDictTrees(String parentId, List<BaseDictTree> allBaseDicts);

    /**
     * 字典表列表
     * @param baseDictListDto 查询条件
     * @author ly
     * @date 2020/10/13 14:20
     * @return java.util.List<com.kszs.pojo.BaseDictTree>
     */
    PageInfo<BaseDictTree> getAllBaseDicts(BaseDictListDto baseDictListDto);

    boolean deleteBaseDictBatch(List<String> id);

    /**
     * 批量编辑状态
     * @param list 集合
     * @param status 状态0启动 1关闭
     * @author ly
     * @date 2020/10/13 14:58
     * @return boolean
     */
    boolean updateEnableStatusBatch(List<String> list,String status);

    /**
     * 获取字典表单个详情
     * @param id
     * @author ly
     * @date 2020/10/15 11:35
     * @return com.kszs.entity.BaseDict
     */
    BaseDict getBaseDictByIdDetail(String id);


    ResultObject getBaseDictByIdAndName(String id, String name,String status,Integer pageNum,Integer pageSize);


    /**
     * 获取手工录入的下拉框
     * @author ly
     * @date 2021/5/13 17:48
     * @return java.util.List<com.cw.entity.BaseDict>
     */
    Map<String,List<BaseDict>> getBaseDictByIiPrepayin();
}
